package com.itheima.apidemo1;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Test3 {

    public static void main(String[] args) {

        //BigDecimal：封装了精确的浮点运算，用于解决浮点运算的失真问题

        double d1 = 0.1;
        double d2 = 0.2;
        double d3 = d1 + d2;
        System.out.println(d3);     //0.30000000000000004

        System.out.println("===================");

        //使用BigDecimal解决，把浮点数封装成BigDecimal对象
        //必须使用public BigDecimal(String val)字符串构造器
        /*BigDecimal bd1 = new BigDecimal("0.1");
        BigDecimal bd2 = new BigDecimal("0.2");*/

        //优化：使用静态方法valueOf，内部使用的还是public BigDecimal(String val)字符串构造器
        BigDecimal bd1 = BigDecimal.valueOf(0.1);
        BigDecimal bd2 = BigDecimal.valueOf(0.2);
        BigDecimal bd3 = bd1.add(bd2);      //BigDecimal只是解决手段
        double res = bd3.doubleValue();     //把BigDecimal对象转换成double
        System.out.println(res);

        System.out.println("===================");

        //除法
        BigDecimal bd4 = BigDecimal.valueOf(10);
        BigDecimal bd5 = BigDecimal.valueOf(3);
        //BigDecimal bd6 = bd4.divide(bd5);       //抛异常
        BigDecimal bd6 = bd4.divide(bd5, 2, RoundingMode.HALF_UP);      //保留2位小数，四舍五入
        System.out.println(bd6);
    }
}
